Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Data Types

String Data Types

Data typeDescriptionMax char lengthStorage
char(n)Fixed-length non-Unicode character data (n must be between 1 and 8000)8,000n bytes (uses one byte for each character)
varchar(n)Variable-length non-Unicode character data (n must be between 1 and 8000)8,000n bytes + 2 bytes
varchar(max)Variable-length non-Unicode character dataup to 2 GB
nchar(n)Fixed-length Unicode character data (n must be between 1 and 4000)4,0002 * n bytes (uses two bytes for each character)
nvarchar(n)Variable-length Unicode character data (n must be between 1 and 4000)4,0002 * n bytes + 2 bytes (uses two bytes for each character)
nvarchar(max)Variable-length Unicode character dataup to 2 GB
binary(n)Fixed-length binary data (n must be between 1 and 8000)8,000n bytes
varbinary(n)Variable-length binary data (n must be between 1 and 8000)8,000actual length of data entered + 2 bytes
varbinary(max)Variable-length binary data2GB

Numeric Data Types

Data typeDescriptionStorage
bitInteger that can be 0, 1, or NULL
tinyintAllows whole numbers from 0 to 2551 byte
smallintAllows whole numbers between -32,768 and 32,7672 bytes
intAllows whole numbers between -2,147,483,648 and 2,147,483,6474 bytes
bigintAllows whole numbers between -9,223,372,036,854,775,808 and 9,223,372,036,854,775,8078 bytes
decimal(p,s)Fixed precision and scale numbers.

Allows numbers from -10^38 +1 to 10^38 –1.

The p parameter indicates the maximum total number of digits that can be stored (both to the left and to the right of the decimal point). p must be a value from 1 to 38. Default is 18.

The s parameter indicates the maximum number of digits stored to the right of the decimal point. s must be a value from 0 to p. Default value is 0
5-17 bytes
numeric(p,s)Fixed precision and scale numbers.

Allows numbers from -10^38 +1 to 10^38 –1.

The p parameter indicates the maximum total number of digits that can be stored (both to the left and to the right of the decimal point). p must be a value from 1 to 38. Default is 18.

The s parameter indicates the maximum number of digits stored to the right of the decimal point. s must be a value from 0 to p. Default value is 0
5-17 bytes
smallmoneyMonetary data from -214,748.3648 to 214,748.36474 bytes
moneyMonetary data from -922,337,203,685,477.5808 to 922,337,203,685,477.58078 bytes
float(n)Floating precision number data from -1.79E + 308 to 1.79E + 308.

The n parameter indicates whether the field should hold 4 or 8 bytes. float(24) holds a 4-byte field and float(53) holds an 8-byte field. Default value of n is 53.
4 or 8 bytes
realFloating precision number data from -3.40E + 38 to 3.40E + 384 bytes

Date and Time Data Types

Data typeDescriptionStorage
datetimeFrom January 1, 1753 to December 31, 9999 with an accuracy of 3.33 milliseconds8 bytes
datetime2From January 1, 0001 to December 31, 9999 with an accuracy of 100 nanoseconds6-8 bytes
smalldatetimeFrom January 1, 1900 to June 6, 2079 with an accuracy of 1 minute4 bytes
dateStores a date only. From January 1, 0001 to December 31, 99993 bytes
timeStores a time only to an accuracy of 100 nanoseconds3-5 bytes
datetimeoffsetThe same as datetime2 with the addition of a time zone offset8-10 bytes
timestampStores a unique number that gets updated every time a row gets created or modified. The timestamp value is based upon an internal clock and does not correspond to real time. Each table may have only one timestamp variable

Other Data Types

Data typeDescription
sql_variantStores up to 8,000 bytes of data of various data types, except text, ntext, and timestamp
uniqueidentifierStores a globally unique identifier (GUID)
xmlStores XML formatted data. Maximum 2GB
cursorStores a reference to a cursor used for database operations
tableStores a result-set for later processing